SYNOLOGY-ACTIVE-PROTECT-MANAGER-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, enterprises, Unsigned32, Counter64
        FROM SNMPv2-SMI
    DisplayString
        FROM SNMPv2-TC;


activeProtectManager MODULE-IDENTITY
    LAST-UPDATED "202604010000Z"
    ORGANIZATION "www.synology.com"
    CONTACT-INFO
    "Synology Inc.
	 email: snmp@synology.com"
    DESCRIPTION  "MIB for ActiveProtect Manager backup and recovery notifications."
   REVISION     "202604010000Z"
    DESCRIPTION  "Initial version."
    ::= { enterprises 6574 301 }

synology	OBJECT IDENTIFIER
	::= { enterprises 6574 }

-- ==========================================================
-- Top Level Design: Notifications and Objects
-- ==========================================================
apmNotifications OBJECT IDENTIFIER ::= { activeProtectManager 1 }
apmObjects       OBJECT IDENTIFIER ::= { activeProtectManager 2 }

-- ==========================================================
-- Objects (Variables used in Traps)
-- ==========================================================
workloadCategory OBJECT-TYPE
    SYNTAX      INTEGER {
                    machine(1),
                    microsoft365(2),
                    googleWorkspace(3)
                }
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "The category of the workload."
    ::= { apmObjects 1 }
workloadType OBJECT-TYPE
    SYNTAX      INTEGER {
                    pcMac(101),
                    physicalServer(102),
                    fileServer(103),
                    virtualMachine(104),
                    exchange(201),
                    oneDrive(202),
                    chat(203),
                    group(204),
                    sharePoint(205),
                    teams(206),
                    mail(301),
                    calendar(302),
                    contacts(303),
                    myDrive(304),
                    sharedDrive(305)
                }
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "The type of the workload."
    ::= { apmObjects 2 }
workloadName OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "The name of the workload."
    ::= { apmObjects 3 }
protectionPlan OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "Name of the protection plan."
    ::= { apmObjects 4 }
startTime OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "Task start time."
    ::= { apmObjects 5 }
endTime OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "Task end time."
    ::= { apmObjects 6 }
backupServer OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "The hostname of the backup server."
    ::= { apmObjects 7 }
status OBJECT-TYPE
    SYNTAX      INTEGER {
                    successful(1),
                    partiallySuccessful(2),
                    failed(3),
                    canceled(4)
                }
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "The backup or restore job execution results."
    ::= { apmObjects 8 }
version OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "The version of the workload."
    ::= { apmObjects 9 }
restoreType OBJECT-TYPE
    SYNTAX      INTEGER {
                    fullRestore(1),
                    systemVolumeRestore(2),
                    customVolumeRestore(3),
                    fullVMRestore(4),
                    instantVMRestore(5),
                    fileLevelRestore(6)
                }
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "The type of restoration job."
    ::= { apmObjects 10 }
userName OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "The user who initiated the task."
    ::= { apmObjects 11 }
restoreDestination OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "Target destination of the restore."
    ::= { apmObjects 12 }
finishedVersionCounts OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "Number of finished versions."
    ::= { apmObjects 13 }
finishedWorkloadCounts OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "Number of finished workloads."
    ::= { apmObjects 14 }
failedVersionCounts OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "Number of failed versions."
    ::= { apmObjects 15 }
failedWorkloadCounts OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "Number of failed workloads."
    ::= { apmObjects 16 }
processedDataSize OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "Size of processed data (Byte)."
    ::= { apmObjects 17 }
transferredDataSize OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "Size of transferred data (Byte)."
    ::= { apmObjects 18 }
processingDuration OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "Duration of the process (second)."
    ::= { apmObjects 19 }
processingRate OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "Transfer or processing rate (Byte/s)."
    ::= { apmObjects 20 }

-- ==========================================================
-- Notifications (Traps) Hierarchy
-- ==========================================================
testTrap OBJECT IDENTIFIER ::= { apmNotifications 1 }
testTrapNotifs OBJECT IDENTIFIER ::= { testTrap 0 }
dataProtection OBJECT IDENTIFIER ::= { apmNotifications 2 }
-- DataProtection Sub-groups
backup OBJECT IDENTIFIER ::= { dataProtection 1 }
backupNotifs OBJECT IDENTIFIER ::= { backup 0 }
restore OBJECT IDENTIFIER ::= { dataProtection 2 }
restoreNotifs OBJECT IDENTIFIER ::= { restore 0 }
copy OBJECT IDENTIFIER ::= { dataProtection 3 }
copyNotifs OBJECT IDENTIFIER ::= { copy 0 }

apmTestTrap NOTIFICATION-TYPE
    OBJECTS { backupServer }
    STATUS      current
    DESCRIPTION "A test trap to verify SNMP configuration."
    ::= { testTrapNotifs 1 }
backupCompleted NOTIFICATION-TYPE
    OBJECTS { workloadCategory, workloadType, workloadName, protectionPlan, startTime, endTime, backupServer, status }
    STATUS      current
    DESCRIPTION "Notification sent when a backup task is completed."
    ::= { backupNotifs 1 }
restoreCompleted NOTIFICATION-TYPE
    OBJECTS { workloadCategory, workloadType, workloadName, version, restoreType, userName, startTime, endTime, restoreDestination, status }
    STATUS      current
    DESCRIPTION "Notification sent when a restore task is completed."
    ::= { restoreNotifs 1 }
copyCompleted NOTIFICATION-TYPE
    OBJECTS { backupServer, finishedVersionCounts, finishedWorkloadCounts, failedVersionCounts, failedWorkloadCounts, processedDataSize, transferredDataSize, processingDuration, processingRate }
    STATUS      current
    DESCRIPTION "Notification sent when a copy task is completed."
    ::= { copyNotifs 1 }

END